package com.smart.community.commons.config.sender.impl;

import org.springframework.stereotype.Component;

import com.smart.community.commons.config.sender.LogSender;
import com.smart.community.commons.dto.ApiLogDTO;

import lombok.extern.slf4j.Slf4j;

/**
 * 本地日志发送器
 * 当RocketMQ不可用时，使用本地日志记录
 * @author Wu.Liang
 * @date 2025年1月20日
 */
@Slf4j
@Component("localLogSender")
public class LocalLogSender implements LogSender {

	@Override
	public void sendLog(ApiLogDTO logDTO) {
		try {
			// 使用本地日志记录操作信息
			log.info("=== 操作日志记录 ===");
			log.info("用户ID: {}", logDTO.getUserId());
			log.info("用户名: {}", logDTO.getUsername());
			log.info("操作人: {}", logDTO.getOperator());
			log.info("请求URL: {}", logDTO.getRequestUrl());
			log.info("请求方法: {}", logDTO.getRequestMethod());
			log.info("操作类型: {}", logDTO.getOperationName());
			log.info("操作描述: {}", logDTO.getOperationDesc());
			log.info("执行时间: {}ms", logDTO.getExecutionTime());
			log.info("响应结果: {}", logDTO.getResponseResult());
			log.info("日志时间: {}", logDTO.getLogTime());
			
			if (logDTO.getErrorMessage() != null) {
				log.error("错误信息: {}", logDTO.getErrorMessage());
			}
			
			log.info("=== 操作日志记录结束 ===");
		} catch (Exception e) {
			log.error("本地日志记录失败: {}", e.getMessage(), e);
		}
	}
}
